Menyimpan Data
Secara Terstruktur
👩🏫 Secara Formal:
Struktur Data Linear adalah cara menyimpan data secara berurutan. Elemen-elemen ini terhubung satu sama lain secara linear.
- Array 2D (Matrix): Kumpulan data dengan struktur baris dan kolom. Diakses lewat `arr[baris][kolom]`.
- String: Kumpulan (array) dari karakter (char). Diakses seperti array biasa `str[i]`.
- Stack (Tumpukan): Struktur data LIFO (Last In, First Out). Data yang terakhir masuk adalah yang pertama keluar. Operasinya: `push()` (masukkan), `pop()` (keluarkan), `top()` (lihat yang paling atas).
- Queue (Antrian): Struktur data FIFO (First In, First Out). Data yang pertama masuk adalah yang pertama keluar. Operasinya: `push()` (masukkan ke belakang), `pop()` (keluarkan dari depan), `front()` (lihat yang paling depan).
Analogi Jaman Now
Array 2D (Matrix)
Bayangin Spreadsheet (Excel/Google Sheets) nilai rapor siswa. Baris (row) merepresentasikan "Siswa ke-sekian" dan Kolom (column) merepresentasikan "Mata Pelajaran". Jika kita ingin melihat nilai Matematika dari Budi, kita cari `rapor[barisBudi][kolomMTK]`.
String
Kayak kalung manik-manik bertuliskan nama. Setiap manik itu satu huruf (karakter). Kamu bisa mengambil satu huruf khusus di tengah, memotong kalungnya, atau menggabungkannya dengan kalung nama lain.
Stack (LIFO)
Fitur "Undo" (Ctrl+Z) waktu kamu lagi ngetik atau nge-desain. Kalau kamu melakukan 3 kesalahan berturut-turut, saat kamu tekan Undo, kesalahan yang paling terakhir kamu lakukan yang akan dihapus duluan. (Last In, First Out)
Queue (FIFO)
Persis kayak Antrian Drive-Thru McD. Mobil yang pertama kali datang (masuk dari belakang antrian), dia yang pertama kali dilayani dan keluar dari depan. Kalau ada mobil baru datang, dia wajib ngantri di paling belakang. (First In, First Out)
⚠️ Common Mistakes di OSN: Empty Stack/Queue
Saat memanggil fungsi pop() atau top() / front() di C++, kamu WAJIB memastikan bahwa Stack atau Queue tersebut TIDAK KOSONG dengan menggunakan !st.empty().
Alasan: Mencoba mengeluarkan atau melihat elemen dari tumpukan/antrian yang sudah kosong akan menyebabkan Segmentation Fault (Segfault) atau Runtime Error secara langsung.
Perbandingan Stack & Queue
Lihat perbedaan aliran masuk/keluar data (Push/Pop) antara LIFO (Stack) dan FIFO (Queue). Angka dimasukkan berurutan: 1, 2, 3, 4, lalu dikeluarkan.
Simulator Bracket Matching (Aplikasi Stack)
Di OSN, Stack sering dipakai untuk mengecek keseimbangan tanda kurung di sebuah rumus. Aturannya:
1. Tanda kurung BUKA di-push ke stack.
2. Jika bertemu tanda kurung TUTUP, pop stack dan cek apakah kurung pasangannya cocok.
⚠️ Common Mistakes: Sisa Tanda Kurung
Saat proses mengecek string selesai sampai ujung, banyak peserta yang lupa mengecek apakah Stack sudah kosong. Jika string sudah habis tapi di dalam stack masih ada tanda kurung BUKA yang tersisa, berarti rumus tersebut TIDAK VALID (Tanda kurung BUKA lebih banyak dari TUTUP).